namespace MEF_Test.Bricks.Subtitles
{
    using System.Collections.Generic;

    using MEF_Test.Contracts;

    /// <summary>
    /// Signature for the <see cref="SubtitlesProvidersManager.AsyncSubtitlesResultsReceived"/> event.
    /// </summary>
    public delegate void AsyncSubtitlesResultsReceivedEventHandler(object sender, AsyncSubtitlesResultsReceivedEventArgs eventArgs);


    public interface ISubtitlesProvidersManager
    {
        T GetProvider<T>();

        ///// <summary>
        ///// Gets the subtitles.
        ///// </summary>
        ///// <param name="node">The node for which to find subtitles.</param>
        ///// <returns></returns>
        //List<SubtitlesProviderResults> GetSubtitles(IBrowserNodeViewModel node);

        /// <summary>
        /// Gets the subtitles asynchronously.
        /// </summary>
        /// <param name="node">The node for which to find subtitles.</param>
        /// <returns>A non-observable enumerable of observable <see cref="SubtitlesProviderResults"/> containing infos about the search results for a specific subtitles provider.</returns>
        IEnumerable<SubtitlesProviderResults> GetSubtitlesAsync(IBrowserNodeViewModel node);

        /// <summary>
        /// Occurs when results for the asynchronous subtitles request are received].
        /// </summary>
        event AsyncSubtitlesResultsReceivedEventHandler AsyncSubtitlesResultsReceived;

        #region Delegates

        #endregion
    }
}